home *** CD-ROM | disk | FTP | other *** search
- package com.extensibility.plugin;
-
- import java.io.File;
- import java.lang.reflect.Method;
- import java.util.Enumeration;
- import java.util.Hashtable;
- import java.util.Vector;
-
- public class PluginRegistry {
- public static final int API_VERSION_1_1 = 65537;
- public static final int API_VERSION_1_2 = 65538;
- private int apiVersion = 0;
- private Hashtable apiListing = new Hashtable();
- private PluginClassLoader loader = new PluginClassLoader();
- private static Class[] methodParams = new Class[]{Class.forName("com.extensibility.plugin.PluginRegistry")};
- private static PluginRegistry globalRegistry = null;
-
- public PluginRegistry() {
- String var1 = System.getProperty("java.specification.version");
- if (var1 == null) {
- this.apiVersion = 65537;
- } else {
- Float var2 = new Float(var1);
- this.apiVersion = (int)(var2 * (float)65536);
- }
-
- }
-
- public static PluginRegistry getRegistry() {
- return globalRegistry;
- }
-
- public static void setRegistry(PluginRegistry var0) {
- globalRegistry = var0;
- }
-
- public void registerPluginsInFolder(File var1) {
- if (var1.isDirectory()) {
- String[] var2 = var1.list(new 1((PluginRegistry)null));
- Vector var3 = this.loadJars(var1, var2);
- this.callMainClasses(var3);
- }
- }
-
- public boolean registerPlugin(String var1, Class var2, String var3, int var4) {
- if (var4 > this.apiVersion) {
- return false;
- } else {
- Object var5 = this.apiListing.get(var1);
- Vector var6;
- if (var5 == null) {
- var6 = new Vector();
- this.apiListing.put(var1, var6);
- } else {
- var6 = (Vector)var5;
- }
-
- var6.addElement(var2);
- return true;
- }
- }
-
- public int getPluginApiCount(String var1) {
- Object var2 = this.apiListing.get(var1);
- int var3 = 0;
- if (var2 != null) {
- Vector var4 = (Vector)var2;
- var3 = var4.size();
- }
-
- return var3;
- }
-
- public Object getNthPlugin(String var1, int var2) {
- Object var3 = this.apiListing.get(var1);
- Object var4 = null;
- if (var3 != null) {
- Vector var5 = (Vector)var3;
- Class var6 = (Class)var5.elementAt(var2);
-
- try {
- if (var6 != null) {
- var4 = var6.newInstance();
- }
- } catch (Exception var8) {
- }
- }
-
- return var4;
- }
-
- protected void callMainClasses(Vector var1) {
- Enumeration var2 = var1.elements();
-
- while(var2.hasMoreElements()) {
- String var3 = (String)var2.nextElement();
-
- try {
- Class var4 = this.loader.loadClass(var3, true);
- Method var5 = var4.getDeclaredMethod("registerPlugin", methodParams);
- Object[] var6 = new Object[]{this};
- var5.invoke((Object)null, var6);
- } catch (Exception var7) {
- }
- }
-
- }
-
- protected Vector loadJars(File var1, String[] var2) {
- Vector var3 = new Vector();
- var3.ensureCapacity(var2.length);
-
- for(int var4 = 0; var4 < var2.length; ++var4) {
- File var5 = new File(var1, var2[var4]);
- String var6 = null;
- if (var5.isFile()) {
- try {
- var6 = this.loader.enumerateClasses(var5);
- } catch (Exception var8) {
- }
- }
-
- if (var6 != null) {
- var3.addElement(var6);
- }
- }
-
- return var3;
- }
- }
-